package org.pro.Net;

import org.pro.Model.Element;
import org.pro.Model.Tank;
import org.pro.Model.WarData;

import java.io.Serializable;
import java.util.concurrent.CopyOnWriteArrayList;


public class Natway implements Serializable {
    public static final long serialVersionUID = 8L;
    public enum MessageType{
        READY,//客户端准备就绪
        TANK_MOVE,//坦克移动
        TANK_SHOOT,//坦克发射
        TANK_DIR,//坦克炮塔方向
        STATE,
        ELEMENT,
    }
    //发送什么消息呢？
    public int playerid;//人
    public WarData warData;//服务器发送游戏数据
    //客户端发送啥？
    public MessageType type;//发送消息类型
    public boolean moving;//是否移动
    public String dir;//移动的方向
    public double tandir;//坦克炮筒的位置
    public float dt;//涉及时间
    public  CopyOnWriteArrayList<Element> elements;
    //服务器向客户端发送消息
    public static Natway creatGame(WarData warData,float dt)
    {
        Natway msg=new Natway();
        msg.type=MessageType.STATE;
        msg.warData=warData;
        msg.dt=dt;
        return msg;
    }
    //客户端向服务器发送坦克的移动,只需告诉状态,方向以及哪个坦克就好,在套接字哪里限制就好咯？
    public static Natway creatTankmove(boolean moving,String dir,int playerid)
    {
        Natway msg=new Natway();
        msg.type=MessageType.TANK_MOVE;
        msg.dir=dir;
        msg.playerid=playerid;
        msg.moving=moving;
        return msg;
    }
    //炮筒移动的方向
    public static Natway creatTankdir(double tankdir,int playerid)
    {
        Natway msg=new Natway();
        msg.type=MessageType.TANK_DIR;
        msg.tandir=tankdir;
        return msg;
    }
    //告诉发射子弹了，其余的在套接字那里限制？
    public static Natway creatShoot(int playerid)
    {
        Natway msg=new Natway();
        msg.type=MessageType.TANK_SHOOT;
        return msg;
    }

    //创建消息
    public static Natway creatReady(int id,WarData warData)
    {
        Natway msg=new Natway();
        msg.type=MessageType.READY;
        msg.playerid=id;
        msg.warData=warData;
        return msg;
    }
    public static Natway creatELEMENT(CopyOnWriteArrayList<Element> elements)
    {
        Natway msg=new Natway();
        msg.elements=elements;
        msg.type=MessageType.ELEMENT;
        return msg;
    }
    @Override
    public String toString() {
        return "Type: " + type+"size:"+elements.size();
    }

}
